package Ep01_String.Offer_67;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Jimmy Zhan WORKSTATION
 * @since 2023/7/13 10:29
 * 说明：
 */

public class Mine {
    public static void main(String[] args) {
        Mine m = new Mine();
        System.out.println(m.strToInt("42"));
    }
    public int strToInt(String str) {
        boolean isPos = true;
        int start = 1;      // 默认有符号，从第1位开始处理
        long res = 0;       // 防止越界异常，要先设置为long，最后判定安全后再向下转型int
        int bond = Integer.MAX_VALUE;
        str = str.trim();   // 去除空格
        char[] chars = str.toCharArray();
        if (chars[0] == '-') {
            isPos = false;
        } else if (chars[0] != '+') {
            // 如果无符号，就从第0位开始处理
            start = 0;
        }
        for (int i = start; i < chars.length; ++i) {
            if (chars[i] < '0' || chars[i] > '9')break;
            // 因为这里char和long运算，算的是char的askii码，因此要用减去‘0’的askii，这样chars[i] - '0'的值就和数字的值相等了
            res = res * 10 + chars[i] - '0';
            if (res > bond) {
                return isPos ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
        }
        return isPos ? (int) res : (int) res * (-1);
    }
}
